package PenTest.Soluation7;


import java.util.Scanner;

/**
 * 题目： 大数想加
 * 1. StringBuilder 来存储
 * 2. 从后往前进行想加
 * 3. 个位保存当下
 * 4. 进位存储加到下一位
 * 5. 最后倒一下字符串 StringBuilder
 */
public class Solution {

    public String solve (String s, String t) {

        // new 一个StringBuilder 来存储结果
        StringBuilder ret = new StringBuilder();

        // 从后往前逆置
        int i = s.length() - 1;
        int j = t.length() - 1;
        int tip = 0;

        // 出循环的结果
        // 字符串都遍历完而且没有进位就加入
        while (i >= 0 || j >= 0 || tip != 0) {

            // 计算这一位的总和
            int sum = 0;
            sum += tip;
            // 如果 s 没有越界就加入
            if (i >= 0) {
                // 注意去掉自身的 '0'
                sum +=  s.charAt(i) - '0';
                i--;
            }

            if (j >= 0) {
                sum += t.charAt(j) - '0';
                j--;
            }


            // 加入个位数字
            ret.append(sum % 10);

            // 进位保存
            tip = sum / 10;
        }

        return  ret.reverse().toString();
    }
}


/**
 * 题目: 大数相乘
 * 1. 无进位的先把同一位数值相加存储到数组中
 * 2. 最后把 每一个进行 相加 取个位保留, 取十位加入下一位
 * 3. 最后逆置打印即可
 * 4. 注意特殊的情况 : 字符串为 空 , 字符串中只有一个 0
 */

 class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        // 输入
        StringBuilder str1 = new StringBuilder(in.next());
        StringBuilder str2 = new StringBuilder(in.next());


        // 长度
        int n1 = str1.length();
        int n2 = str2.length();

        // 特殊为 空字符的情况
        if(n1 == 0 ) {
            System.out.println(str2.toString());
            return;
        }

        if(n2 ==  0) {
            System.out.println(str1.toString());
            return;
        }

        // 特殊为 0 的情况
        if ( (n1==1 && str1.charAt(0)=='0') || (n2==1 && str2.charAt(0)=='0')) {
            System.out.println("0");
            return;
        }

        // 排除违规情况
        if(n1+n2 >= 10000) return ;

        // 记录每一位
        int[] nums= new int[10000];

        // 将字符串逆置
        str1.reverse();
        str2.reverse();

        // 进行无进位相加
        for(int i = 0; i < n1; i++) {
            for(int j = 0; j < n2 ; j++) {
                // 计算该位置的总和
                int sum =1;
                sum *= (str1.charAt(i) - '0');
                sum *= (str2.charAt(j) - '0');
                // 放入 对应位置的数组存储
                nums[i+j] += sum;
            }
        }

        // 得到结果
        StringBuilder ret = new StringBuilder();

        // 进行进位 ， 得出结果
        // flg 用于进位需要
        int flg=0;
        for(int i=0; i < n1+n2-1 || flg != 0; i++) {
            int sum = flg + nums[i];
            ret.append(sum%10);
            flg = sum / 10;
        }

        // 最终逆置打印
        System.out.println(ret.reverse().toString());
    }
}
